package com.hjimi.ski.model.base;

import com.hjimi.ski.callback.BaseCallback;

import java.io.File;
import java.util.Map;

/**
 * Created by Administrator on 2018/10/24 0024.
 */

public abstract class BaseModel<T> {

    //数据请求路径
    protected String url;
    protected String mParamsKey[];
    protected String mParamsValue[];
    protected String token;
    protected File file;
    /**
     * 设置数据请求参数
     *
     * @param url 请求路径
     */

    public BaseModel url(String url) {
        this.url = url;
        return this;
    }

    public BaseModel token(String token){
        this.token = token;
        return this;
    }

    public BaseModel file(File file){
        this.file = file;
        return this;
    }

    /**
     * 设置数据请求参数key
     *
     * @param mParams 请求参数key
     */

    public BaseModel paramKey(String... mParams) {
        this.mParamsKey = mParams;
        return this;
    }

    /**
     * 设置数据请求参数value
     *
     * @param mParams 请求参数value
     */

    public BaseModel paramValue(String... mParams) {
        this.mParamsValue = mParams;
        return this;
    }

    /**
     * 添加Callback并执行数据请求
     * 实现具体的Model请求时必须要重写
     *
     * @param callback
     */
    public abstract void execute(BaseCallback<T> callback);

    // 执行Get网络请求，此类看需求由自己选择写与不写
    protected void requestGetAPI(String url, BaseCallback<T> callback) {
        //这里写具体的网络请求
    }

    // 执行Post网络请求，此类看需求由自己选择写与不写
    protected void requestPostAPI(String url, Map params, BaseCallback<T> callback) {
        //这里写具体的网络请求
    }
}